package com.zhonghui.scm.service.impl;

import com.zhonghui.scm.domain.ScmSaleReturn;
import com.zhonghui.scm.domain.ScmSaleReturnItem;
import com.zhonghui.scm.mapper.ScmSaleDeliveryMapper;
import com.zhonghui.scm.mapper.ScmSaleReturnMapper;
import com.zhonghui.scm.service.IScmSaleReturnService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

/**
 * 销售合同Service业务层处理
 *
 * @author zhonghui
 * @date 2022-05-26
 */
@Service
public class ScmSaleReturnServiceImpl implements IScmSaleReturnService
{
    @Autowired
    private ScmSaleReturnMapper scmSaleReturnMapper;

    @Autowired
    private ScmSaleDeliveryMapper scmSaleDeliveryMapper;

    /**
     * 查询销售合同
     *
     * @param id 销售合同主键
     * @return 销售合同
     */
    @Override
    public ScmSaleReturn getById(Long id)
    {
        return scmSaleReturnMapper.getById(id);
    }

    /**
     * 查询销售合同列表
     *
     * @param scmSaleReturn 销售合同
     * @return 销售合同
     */
    @Override
    public List<ScmSaleReturn> getList(ScmSaleReturn scmSaleReturn)
    {
        return scmSaleReturnMapper.getList(scmSaleReturn);
    }

    /**
     * 新增销售合同
     *
     * @param scmSaleReturn 销售合同
     * @return 结果
     */
    @Override
    public int add(ScmSaleReturn scmSaleReturn)
    {
        scmSaleReturn.setReturnNo(generateNumber("XSJH"));
        // 0未入库1入库中2已入库
        scmSaleReturn.setStatus("0");
        int row = scmSaleReturnMapper.add(scmSaleReturn);
        insertItem(scmSaleReturn);
        return row;
    }

    /**
     * 修改销售合同
     *
     * @param scmSaleReturn 销售合同
     * @return 结果
     */
    @Override
    public int edit(ScmSaleReturn scmSaleReturn)
    {
        scmSaleReturnMapper.delItem(scmSaleReturn.getId());
        insertItem(scmSaleReturn);
        return scmSaleReturnMapper.edit(scmSaleReturn);
    }

    /**
     * 批量删除销售合同
     *
     * @param ids 需要删除的销售合同主键
     * @return 结果
     */
    @Override
    public int del(Long[] ids)
    {
        for (Long id : ids) {
            scmSaleReturnMapper.delItem(id);
        }
        return scmSaleReturnMapper.del(ids);
    }


    public void insertItem(ScmSaleReturn scmSaleReturn){
        List<ScmSaleReturnItem> scmSaleReturnItemList = scmSaleReturn.getScmSaleReturnItemList();

        if (!scmSaleReturnItemList.isEmpty()){

        for (ScmSaleReturnItem scmSaleReturnItem : scmSaleReturnItemList) {
            scmSaleReturnItem.setReturnId(scmSaleReturn.getId());
        }
        scmSaleReturnMapper.addItem(scmSaleReturnItemList);

        }
    }

    public String generateNumber(String number){
        Date date = new Date();
        SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmssSSS");
        return number+format.format(date);
    }
}
